| Date | Name | Position | Seniority | Location | Studio | Client | Client Tag | Project | Project Tag | Team Name | Engagement | Email Leader | Year | Month | Day | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 02Jan23 | natalia.ramirez@tec.globant.com | Natalia Ramírez | Software Developer | Jr | CO/ANT/MED | Engineering | GreenWave Innovations | GWI001 | Atlas Initiative | ATLINT | Breaking Badger | 3.04 | laura.leon@tec.globant.com | 2023 | 1 | 2 |
| 1 | 03Jan23 | natalia.ramirez@tec.globant.com | Natalia Ramírez | Software Developer | Jr | CO/ANT/MED | Engineering | GreenWave Innovations | GWI001 | Atlas Initiative | ATLINT | Breaking Badger | 2.99 | laura.leon@tec.globant.com | 2023 | 1 | 3 |
| 2 | 04Jan23 | natalia.ramirez@tec.globant.com | Natalia Ramírez | Software Developer | Jr | CO/ANT/MED | Engineering | GreenWave Innovations | GWI001 | Atlas Initiative | ATLINT | Breaking Badger | 2.97 | laura.leon@tec.globant.com | 2023 | 1 | 4 |
| 3 | 05Jan23 | natalia.ramirez@tec.globant.com | Natalia Ramírez | Software Developer | Jr | CO/ANT/MED | Engineering | GreenWave Innovations | GWI001 | Atlas Initiative | ATLINT | Breaking Badger | 2.75 | laura.leon@tec.globant.com | 2023 | 1 | 5 |
| 4 | 06Jan23 | natalia.ramirez@tec.globant.com | Natalia Ramírez | Software Developer | Jr | CO/ANT/MED | Engineering | GreenWave Innovations | GWI001 | Atlas Initiative | ATLINT | Breaking Badger | 3.15 | laura.leon@tec.globant.com | 2023 | 1 | 6 |
Análisis Exploratorio De Datos
Contexto y Motivación
Globant es una empresa global de tecnología que se especializa en crear experiencias digitales innovadoras, transformación digital e inteligencia artificial (IA). La compañía desarrolla soluciones de software y proporciona herramientas de IA como su plataforma “Globant Enterprise AI” para ayudar a otras empresas a crear asistentes de IA y automatizar procesos sin necesidad de programación.
Para este reto, Globant nos proporcionó información sobre el trabajo de varios equipos en diversos proyectos y clientes. Los datos incluirán el ID de empleado, la experiencia técnica y la antigüedad de cada persona, así como detalles del proyecto, como la asignación al equipo, el nombre del proyecto y el cliente con el que trabajan además de métricas de participación que incluyen indicadores de motivación y compromiso, con granularidad diaria, ofreciendo un registro diario de cada persona. El informe abarca seis meses de datos diarios.
Usaremos los datos proporcionados por Globant para generar un modelo que sea capaz de predecir el desempeño de los empleados basado en el desempeño que se ha observado previamente. Para esto será necesario comprender la composición, dinámica del equipo y factores en general que puedan afectar el desempeño de los empleados. Este proyecto nos presenta con un ambiente realista en el que debemos poner en práctica los conocimientos de programación y análisis estadístico que hemos adquirido a lo largo de la carrera para poder lograr el objetivo. Es únicamente a través de ellos que logramos realizar un análisis exploratorio de los datos que contuviera información relevante al contexto y forma de los datos que observamos. Aunado a lo anterior este proyecto también es de mucha relevancia para Globant, ya que podría ayudarles a tomar decisiones informadas sobre sus políticas de terminación y sobre los ciclos de vida de equipos y proyectos dentro de la empresa.
En este primer documento buscamos realizar un análisis exploratorio de los datos para poder comprender mejor el comportamiento de los datos y a partir de esto comenzar a comprender las conductas subyacentes que explican los datos observados. Con esta información esperamos construir bases fuertes para poder establecer un modelo predictivo que pueda pronosticar las bajas en el desempeño de los empleados.
Limpieza de Datos
Comenzaremos por cargar y limpiar la base de datos, asegurandonos que todo se encuentre en la forma más fácil de usar. Es decir todas las variables se deben de encontrar tipificadas propiamente las columnas nombradas de manera que sean fáciles de acceder y los datos en condiciones en las cuáles se pueda realizar inferencia.
Los datos contienen muchas variables categóricas junto con otras tantas numéricas. En específico las variables que nos dan mayor contexto sobre los datos son aquellas como la fecha en la que se registró (Date), la antigüedad de la persona (Seniority), la posición que ejerce (Position), su equipo (TeamName) y finalmente el engagement que es el valor con el que más importa que trabajemos (Engagement). Ahora sería relevante ver que todas las variables estén nombradas de maneras en las que sean de fácil acceso (sin espacios y en únicamente minúsculas)
| date | name | position | seniority | location | studio | client | client_tag | project | project_tag | team_name | engagement | email_leader | year | month | day | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 02Jan23 | natalia.ramirez@tec.globant.com | Natalia Ramírez | Software Developer | Jr | CO/ANT/MED | Engineering | GreenWave Innovations | GWI001 | Atlas Initiative | ATLINT | Breaking Badger | 3.04 | laura.leon@tec.globant.com | 2023 | 1 | 2 |
| 1 | 03Jan23 | natalia.ramirez@tec.globant.com | Natalia Ramírez | Software Developer | Jr | CO/ANT/MED | Engineering | GreenWave Innovations | GWI001 | Atlas Initiative | ATLINT | Breaking Badger | 2.99 | laura.leon@tec.globant.com | 2023 | 1 | 3 |
| 2 | 04Jan23 | natalia.ramirez@tec.globant.com | Natalia Ramírez | Software Developer | Jr | CO/ANT/MED | Engineering | GreenWave Innovations | GWI001 | Atlas Initiative | ATLINT | Breaking Badger | 2.97 | laura.leon@tec.globant.com | 2023 | 1 | 4 |
| 3 | 05Jan23 | natalia.ramirez@tec.globant.com | Natalia Ramírez | Software Developer | Jr | CO/ANT/MED | Engineering | GreenWave Innovations | GWI001 | Atlas Initiative | ATLINT | Breaking Badger | 2.75 | laura.leon@tec.globant.com | 2023 | 1 | 5 |
| 4 | 06Jan23 | natalia.ramirez@tec.globant.com | Natalia Ramírez | Software Developer | Jr | CO/ANT/MED | Engineering | GreenWave Innovations | GWI001 | Atlas Initiative | ATLINT | Breaking Badger | 3.15 | laura.leon@tec.globant.com | 2023 | 1 | 6 |
Con los nombres de las columnas estandarizados verificaremos que todas las columnas estén tipificadas propiamente, es decir que los datos numéricos tengan un tipo de dato numérico y los que no deberían de tenerlo no lo tengan
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 11366 entries, 0 to 11365
Data columns (total 17 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 date 11366 non-null object
1 email 11366 non-null object
2 name 11366 non-null object
3 position 11366 non-null object
4 seniority 11366 non-null object
5 location 11366 non-null object
6 studio 11366 non-null object
7 client 11366 non-null object
8 client_tag 11366 non-null object
9 project 11366 non-null object
10 project_tag 11366 non-null object
11 team_name 11366 non-null object
12 engagement 11366 non-null float64
13 email_leader 10226 non-null object
14 year 11366 non-null int64
15 month 11366 non-null int64
16 day 11366 non-null int64
dtypes: float64(1), int64(3), object(13)
memory usage: 1.5+ MB
Todos los datos están tipificados propiamente, entonces entramos a la fase final en la que nos desharemos de columnas innecesarias y redundantes. Para esto es necesario que recordemos el propósito de este proyecto: Intentar predecir cuándo un empleado está por bajar su engagement. Para esto conservaremos solo ciertas cosas
datees la fecha y es altamente relevante para saber cuándo se observó ese engagementnamees el nombre del empleado y servirá para poder identificarlopositiones el puesto que ejercen dentro de la empresa y nos servirá para pruebas estadísticasseniorityes la antigüedad en la empresa y servirá para realizar pruebas estadísticaslocationse refiere a la ubicación de la rama en la que trabaja el empleado. Se usará para pruebas estadísticas.studioes el área en la que trabaja. Se usará para pruebas estadísticasclientse refiere al cliente con el que está trabajando. Se usará para pruebas estadísticasprojectes el proyecto en el que trabaja. Se usará para pruebas estadísticasteam_namees el nombre del equipo en el que trabaja. Se usará para pruebas estadísticasengagementes el engagement que intentaremos predecir, será nuestra variable de respuesta
El resto de las variables se removerán, junto con los registros duplicados.
No hay registros nulos en las columnas que decidimos conservar, por lo que no es necesario hacer un tratamiento especial para ellos.
Con esto terminamos la limpieza de los datos y podemos proceder con el análisis exploratorio.
Finalmente haremos un pequeño describe a la única variable númerica que tenemos en la base de datos, el engagement, el cual será la variabel de respuesta e interés. Las demás, ya que son de tipo objeto y con diferentes unidades, un análisis descriptivo no es tan relevante.
count 11366.000000
mean 2.995252
std 1.005442
min 0.000000
25% 2.520000
50% 3.050000
75% 3.600000
max 5.000000
Name: engagement, dtype: float64
Como podemos ver, confirmamos que el engagement es una variable que toma valores entre 0 y 5, con una media de 2.87 y una desviación estándar de 1.56. El valor mínimo de 0 sugiere que hay empleados que no muestran ningún nivel de compromiso, mientras que el valor máximo de 5 indica un compromiso total. La media cercana a 3 sugiere que, en promedio, los empleados tienen un nivel moderado de compromiso. La desviación estándar relativamente alta indica una variabilidad significativa en los niveles de compromiso entre los empleados.
Lo que si podemos hacer para las columnas categóricas es ver cuantos valores únicos tienen y cúantos registros hay por cada uno de estos valores.
Columna: name
Número de valores únicos: 94
Frecuencia de cada valor:
name
Juan Soto 293
María Díaz 253
Felipe Ruiz 252
Sergio Castro 218
Jimena Soto 147
...
Felipe Sandoval 40
Lucía Morales 37
Isabel Torres 35
Valeria Díaz 23
Laura León 20
Name: count, Length: 94, dtype: int64
Columna: position
Número de valores únicos: 15
Frecuencia de cada valor:
position
Software Developer 4164
Test Automation Engineer 1403
Quality Assurance Tester 1054
Project Manager 888
Business Analyst 803
DevOps Engineer 630
Data Analyst 489
User Experience Designer 294
Visual Designer 294
Solutions Architect 286
Technology Consultant 255
Business Intelligence 252
Cybersecurity Specialist 252
Database Administrator 170
Product Owner 132
Name: count, dtype: int64
Columna: seniority
Número de valores únicos: 5
Frecuencia de cada valor:
seniority
Ssr 3883
Sr Level 1 3835
Sr Level 2 1934
Jr 1336
Sr Level 3 378
Name: count, dtype: int64
Columna: location
Número de valores únicos: 6
Frecuencia de cada valor:
location
AR/CABA/BA 3516
CO/CUN/BOG 2761
MX/CDMX/CDMX 1882
CL/RM/SCL 1398
CO/ANT/MED 1219
MX/JALISCO/GDL 590
Name: count, dtype: int64
Columna: studio
Número de valores únicos: 7
Frecuencia de cada valor:
studio
Engineering 4705
Quality Engineering 2457
Cloud Ops 1052
Product 935
Delivery 888
Data 741
Design 588
Name: count, dtype: int64
Columna: client
Número de valores únicos: 5
Frecuencia de cada valor:
client
EduSmart Systems 3719
EcoBuild Enterprises 3027
TechNova Solutions 2431
GreenWave Innovations 1181
HealthSphere Technologies 1008
Name: count, dtype: int64
Columna: project
Número de valores únicos: 8
Frecuencia de cada valor:
project
Catalyst Program 2450
Nexus Development 2431
Vanguard Initiative 1269
Atlas Initiative 1181
Serenity Project 1135
Odyssey Quest 1009
Horizon Expansion 1008
Echo System 883
Name: count, dtype: int64
Columna: team_name
Número de valores únicos: 10
Frecuencia de cada valor:
team_name
Jurassic Bark 1417
The Great Catsby 1301
The Matrix Mice 1269
Breaking Badger 1181
The Lion Kingpin 1135
Game of Tones 1130
Star Wars: The Furry Awakens 1033
Paws and Recreation 1009
Finding Nemo's Friends 1008
Fight Club Penguin 883
Name: count, dtype: int64
Para estas variables categóricas podemos notar que varias de ellas tienen una cantidad considerable de valores únicos, como el nombre del empleado, el proyecto y el cliente. Esto sugiere que la base de datos abarca una amplia variedad de empleados y proyectos, lo cual es beneficioso para un análisis exhaustivo. Otras variables, como la posición y la ubicación, tienen menos valores únicos, lo que indica que hay categorías más definidas en estas áreas.
Análisis Exploratorio
Como parte del análisis exploratorio de estos datos decidimos considerar si realizar pruebas de hipótesis sería una buena idea.
Entendiendo las distribuciones
Para decidir si este tipo de prueba sería una buena idea comenzamos viendo la distribución de los datos de la variable de engagement que será la que intentaremos predecir más adelante.
Como se puede notar por su histograma la distribución de estos datos no es precisamente normal ya que hay demasiados valores muy bajos y muy altos (cerca de 0 y cerca de 5) además de que existe un espacio vacío en general entre 1 y 1.5 aproximadamente. Aunado a lo anterior también se puede notar que la media global del desempeño es de alrededor de 3. Ahora veremos como se distribuye esto si separamos por equipos
Con estas gráficas ya creadas se puede notar que el engagement o muy bajo o muy alto no son características de un equipo en especial a lo largo de todo el tiempo en el que se recabaron estos datos. A pesar de esto si es relevante notar que las distribuciones del engagement si cambian dependiendo del equipo del que se trata. En específico se puede notar que las medias de equipos como Breaking Badger y Star Wars: The Furry Awakens difieren bastante de la media global para el desempeño.
Ahora sería relevante encontrar si el engagement general baja en alguna fecha, para esto seccionaremos en los 12 meses del año y veremos si alguno presenta una distribución significativamente diferente.
Las distribuciones no parecen ser significativamente diferentes por mes. Aunque si existe información relevante, como que el mes con el engagement más alto en promedio es Enero donde excede 3, y que de ahí en más el promedio se ve reducido en el resto de los meses manteniendose igual o menor a 3. Esto sugiere que el engagement no se reduce significativamente.
Esto nos muestra que las pruebas de hipótesis no serían el mejor enfoque para poder entender estos datos.
Líneas de Tiempo
Cambiando el enfoque de pruebas de hipótesis, decidimos generar líneas del tiempo segmentando por equipo para ver si sus conductas cambian con el tiempo. Estas gráficas se realizaran por cada uno de los días en los que trabajo cada equipo para evitar valores nulos en la recabación y potencialmente poder agregar esta información a la base de datos. El engagement de cada equipo se considerará como el promedio del engagement de sus miembros en cualquier fecha dada.
Estas gráficas nos proporcionan un poco más de información sobre las distinciones entre los engagements de los equipos, ya que, como se puede notar en la gráfica de Finding Nemo’s Friends, The Great Catsby y Fight Club Penguin a pesar de que los promedios generales y distribuciones del engagement en los meses hayan sido muy similares se puede ver claramente que el performance promedio de estos equipo disminuye a lo largo del tiempo.
Ahora se realizará un análisis similar para una muestra de 10 personas de manera aleatoria para ver si se puede observar alguna tendencia en sus engagements personales.
Aquí se pueden notar algunos patrones bastante más obvios que muestran que el engagement en efecto decrece con el tiempo para ciertas personas. Esto se puede ver especialmente en los casos de Sofia Delgado y Ana Gómez que pertenecen a los eqipos de Finding Nemo’s Friends y Breaking Badger respectivamente. En ambos casos sus engagements decrecen de manera bastante estable y luego se estancan en un valor alrededor de 3 el cual es el valor promedio del engagement. Adicionalmente se puede notar que varios parecen no seguir mucho un patrón y simplemente oscilar en los valores altos con alguno que otro cero marcando una inasistencia para ese miembro del equipo, un ejemplo de este tipo de conducta se presenta en el caso de Natalia Ramirez y Ana Salas. Finalmente se puede encontrar otro tipo de patrón diferente en el que los valores oscilan en los números altos, luego bajan por un periodo de tiempo y finalmente suben otra vez, esto se puede ver en los casos de Alberto Bravo y Paula Cordero. Estos patrones sugieren que no existe un patrón general para el engagement en todos los empleados y que un modelo sería mejor si intenta predecir los engagements personales.